刚开始使用github完全是跟风,许多大牛都在用,自己也想尝试一下。后来发现github的版本控制真的是神器,大爱github。而在使用github的过程中,必须使用git来进行操作,因此,在自己学习的过程中,记录一下遇到问题和解决问题的过程。
一、git的基本操作
二、连接github远程仓库
1.一台电脑连接到一个仓库:
首先在电脑本地创建ssh的公私钥对,windows下在任意地方鼠标右键,选择Git Bash Here
,打开MINGW64;linux下直接打开Terminal,输入命令:
|
|
一路按回车就好,然后会在相应的文件夹(Windows为C:\Users\%yourUserName%\.ssh\, linux为~\.ssh\)下生成两个文件:id_rsa和id_rsa_pub。
然后github上创建一个账户,然后在settings中选择SSH and GPG key
,然后点击New SSH key
,并将文件id_rsa_pub中的全部内容复制粘贴在Key的框内,保存就好。最后需要对git进行全局设置:
|
|
后面建立本地文件夹与远程仓库的联系,有两种方法:第一种就直接在github上创建一个仓库,然后将仓库的git地址复制,在本地进行git clone git git@github.com:yourGithubName/yourRepositoryName.git
,然后在该文件夹中进行你的操作,最后提交就好:
|
|
2. 一台电脑连接多个仓库:
有时候我们需要在一台电脑上连接多个远程仓库,比如两个github,或者你还想连接一个国内的oschina,那么,我们需要设置一下,让一台电脑连接到多个远程仓库。
如果已经连接到了一个远程仓库,现在我们来增加其他的远程仓库。
Windows下在.ssh的文件夹下右键,打开MINGW64,新生成一个公私钥对,(linux环境下,打开Terminal,但是,为了和已经存在的公私钥对区别开,需要重命名密钥。cd ~/.ssh/
)
|
|
然后,创建一个config文件,用于配置不同的仓库指向不同的密钥文件:
|
|
原理分析:
1.ssh客户端通过类似
git@github.com:githubUserName/repoName.git
的地址来识别使用本地的哪个私钥的。config文件中的User表示@前面的部分–git,Host是@后面的github.com.2.默认情况下,所有的User都是git,所有的host都是github.com,那么,ssh客户端就会直接去找
~/.ssh/id_rsa
这个文件。因此,如果我们需要更改Host,设置为我们自定义的一个Host,比如newOne.github.com
,还需要对自定义的Host的域名做CNAME解析到github.com
中,这样在网络中就能够找到github主机了。配置了自定义的Host,新的仓库地址就变成了:git@newOne.github.com:githubUserName/repoName.git
,此时,ssh客户端根据config文件就会找到IdentityFile ~/.ssh/newOne
这个密钥文件进行密钥匹配2.对于oschina,其域名为
git.oschina.net
,因此直接使用默认Host就好。如果还需要连接一个新的oschina仓库,我们就需要新定义一个Host,并将其域名解析到git.oschina.net
将添加的两个公钥文件扽别添加到对应的远程仓库的帐号中。然后需要将添加的ssh密钥添加在ssh agent中:
|
|
有时会遇到问题:执行ssh-add时出现Could not open a connection to your authentication agent
,需要先执行命令:
|
|
然后可以测试一下连接情况:
|
|
然后取消全局用户名/邮箱的配置,具体的用户名和邮箱配置需要进入对应远程仓库的本地文件夹中进行设置:
|
|
最后一步,先从对应的远程仓库中将被某个repository通过命令git clone xxxx@xxx:xxx/xxx.git
下载到本地,然后在该文件夹中,首先配置用户名和邮箱:
|
|
然后查看该仓库对应的远程仓库地址,如果和config文件中对应的新的仓库一致,则不需要修改,如果不一致,则需要进行修改:
|
|